Comparison of Prolog implementations
The following Comparison of Prolog implementations provides a reference for the relative feature sets and performance of different implementations of the Prolog computer programming language.
Main features
Platform |
Features |
Toolkit |
Prolog Mechanics |
Name |
OS |
Licence |
Native Graphics |
Compiled Code |
Unicode |
Object Oriented |
Native OS Control |
Stand Alone Executable |
C Interface[1] |
Java Interface[1] |
Interactive Interpreter |
Debugger |
Code Profiler |
Syntax |
BProlog |
Unix, Windows, Mac OS X |
Free for academic uses |
|
Yes |
|
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
ISO-Prolog, plus event-handling, CLP(FD), and tabling |
Ciao |
Unix, Windows, Mac OS X |
GPL, LGPL |
|
Yes |
|
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
ISO-Prolog, plus extensions |
DOS-PROLOG |
MS-DOS |
Shareware |
Yes |
Yes |
Yes |
|
Yes |
Yes |
|
|
|
Yes |
|
Edinburgh Prolog |
GNU Prolog |
Unix, Windows, Mac OS X |
GPL, LGPL |
|
Yes |
|
|
Yes |
Yes |
Yes |
|
Yes |
Yes |
|
ISO-Prolog |
Jekejeke Prolog |
JVM |
w/o Toolkit Distributable otherwise Evaluation |
Yes (via Java) |
|
Yes (16-bit) |
|
Yes (via Java) |
|
|
Yes |
Yes |
Yes |
|
ISO-Prolog, Java API |
JLog |
JVM |
GPL |
Yes |
Yes |
|
|
|
|
|
Yes |
Yes |
|
|
ISO-Prolog |
JScriptLog |
Web Browser |
GPL |
|
|
|
|
|
|
|
|
Yes |
|
|
ISO-Prolog |
jTrolog |
JVM |
LGPL |
|
|
Yes |
|
|
|
|
Yes |
Yes |
Yes |
|
ISO-Prolog tests |
LPA-Prolog |
Windows |
Commercial |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Edinburgh Prolog with extensions |
Open Prolog |
Mac OS |
Freeware |
|
|
|
|
|
|
|
|
|
Yes |
|
|
Poplog Prolog |
Linux (32- and 64-bit), Unix, Windows |
Free Open Source |
Only through POP-11, on Linux |
Yes |
|
|
Yes |
Yes |
Yes |
|
Yes |
Yes |
|
Edinburgh Prolog, with interfaces to Poplog Common Lisp and Pop-11 |
SICStus Prolog |
Unix, Linux, Windows, Mac OS X |
Commercial |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
ISO-Prolog |
Strawberry Prolog |
Windows, Unix |
Freeware, Commercial |
Yes |
Yes |
Yes |
|
|
Yes |
|
|
|
Yes |
|
Not ISO-Prolog + extensions |
SWI-Prolog |
Unix, Windows, Mac OS X |
LGPL |
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
ISO-Prolog, Edinburgh Prolog |
tuProlog |
JVM |
LGPL |
Yes |
|
Yes |
|
|
|
Yes |
Yes |
Yes |
Yes |
|
ISO-Prolog |
Visual Prolog |
Windows |
Freeware, Commercial |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
|
Yes |
Yes |
|
XSB Prolog |
Linux, Windows, Solaris, Mac OS X |
LGPL |
|
Yes |
|
|
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
ISO-Prolog, tabled WFS |
YAP-Prolog |
Linux, Windows, Solaris, Mac OS X, HP-UX |
GPL or Artistic (user choice) |
|
Yes |
Yes |
|
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
Edinburgh, ISO-Prolog, Quintus and SICStus Prolog compatible |
Operating system and Web-related features
|
Web-related |
Name |
Conditional compilation |
Sockets |
Multi-threading |
Tabling |
HTTP client |
HTTP server |
HTML Parser |
RDF Triple store |
BProlog |
|
|
|
Yes |
|
|
|
|
Ciao |
Yes |
Yes |
Yes |
Yes |
Yes |
|
Yes |
|
GNU Prolog |
|
Yes |
|
|
|
|
|
|
Jekejeke Prolog |
|
Yes (via Java) |
Yes |
|
Yes (built-in) |
Yes (via Java) |
|
|
LPA-Prolog |
|
Yes |
|
|
Yes |
Yes |
Yes |
|
SICStus Prolog |
Yes |
Yes |
|
|
|
|
|
|
SWI-Prolog |
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
Yes |
Visual Prolog |
Yes |
Yes |
Yes |
|
Yes |
|
Yes |
|
XSB |
|
Yes |
Yes |
Yes |
Yes |
|
|
|
YAP-Prolog |
Yes |
Yes |
Yes |
Yes |
|
|
|
|
Static analysis
Optimizations
Portability
Code that strictly conforms to ISO-Prolog is portable across compliant implementations that share the same implementation defined features. Factors that can adversely affect portability include: the processor character set such as Unicode, implementation specific extensions to syntax, bounded vs. unbounded integer arithmetic, non-portable extensions such as string-objects, advanced numeric types (rationals, complex), threads, and tabling. [2]
Benchmarks
- Benchmarking issues: Odd Prolog benchmarking, Performance differences.[3]
- Benchmarking software: older, Dobry, Aquarius benchmark suite, (Bothe, 1990)[4], (Demoen et al. 2001), benchmark descriptions
- Benchmarking results: B-Prolog, SICStus, XSB[5], SICStus vs Yap vs hProlog[6]
- Benchmarking results: Survey of java prolog engines by Michael Zeising
- Benchmarking results: OpenRuleBench yearly open-source benchmark of rule engines
References
External Links